package Anotation_Test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

//元注解(修饰注解的注解)
//常见有2种:
// @Target: 约束自定义注解只能在哪些地方使用:
// TYPE，类，接口
// FIELD, 成员变量
//METHOD, 成员方法
//PARAMETER, 方法参数
//CONSTRUCTOR, 构造器
//LOCAL_VARIABLE, 局部变量

// @Retention：声明注解的生命周期:
// SOURCE： 注解只作用在源码阶段，生成的字节码文件中不存在
// CLASS：  注解作用在源码阶段，字节码文件阶段，运行阶段不存在，默认值.
// RUNTIME：注解作用在源码阶段，字节码文件阶段，运行阶段（开发常用
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Book
{
	//public 属性类型(八种数据类型) 属性名() default 默认值;
	//value属性，如果只有一个value属性的情况下，使用value属性的时候可以省略value名称不写!!
	//但是如果有多个属性,  且多个属性没有默认值，那么value名称是不能省略的。
	String title() default "";
	String author() default "";
	int price() default 0;
}
